＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

                        PC-FXGAオーサリングソフトウェア
                    『ＧＭＡＫＥＲ』スタータキット(Ver.1.1)
                      ”ＦＸＤＢ．ＥＸＥ(Ver.1.03)”の解説

                                        日本電気ホームエレクトロニクス株式会社
                                                        １９９６年０５月３０日

＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

目次

第１章  デバッガ概要

第２章  デバッガの使用書式
２．１  起動方法
２．２  環境変数
２．３  コンフィギュレーションファイル
２．４  コマンドライン編集キー

第３章  コマンド
３．１  コマンド表記
３．２  C言語の式表記
３．３  式に使用できる演算子

第４章  デバッガのコマンド
４．１  コマンドの書式
４．２  各コマンドの説明

第５章  マクロ機能
５．１  マクロコマンドの実行
５．２  制御文
５．３  マクロ機能の使用例

第６章  デバッガのメッセージ
６．１  エラーメッセージ
６．２  その他のメッセージ

＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

第１章  デバッガ概要

本デバッガは「ＧＭＡＫＥＲ」スタータキットのプログラマツール（Ｃコンパイラ(FXC
C.EXE)、アセンブラ(FXAS.EXE)、リンカ(FXLK.EXE)）で作成したプログラムをデバッグ
するためのツールです。本マニュアルではFXDB.EXEの使用方法について解説します。

＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

第２章  デバッガの使用書式

■２．１  起動方法

デバッガを起動するためにはコマンドラインから以下のように入力します。

fxdb [スイッチ] [@コマンドファイル] [コマンド入力...]

１）スイッチ
-g  文字入力処理を変更します。
DOSの入力ルーチンを使用します。ヒストリドライバなどが組み込まれている場合この
オプションを指定するとそれらの機能がデバッガ上で使用できます。
-b  バックアップのエミュレーションを行ないません。

２）コマンドファイル
先頭が "@" で始まる文字列を指定した場合、その文字列をファイル名と認識します。
ファイル中の文字列をデバッガのコマンドとして実行します。

３）コマンドラインからのデバッガのコマンド入力
先頭が "-" でも "@" でもない場合はそれ以降の文字列をデバッガのコマンドとして
起動時に実行します。


■２．２  環境変数

PCFXBACKUP=<filename>

filelib.aを使用するプログラムでSRAMバックアップのエミュレーションを行うときのフ
ァイルを指定します。指定されたファイルが存在しない場合は作成します。
環境変数の指定の無い場合は、フロッピーディスクにPCFXBACK.RAMで32キロバイト確保
されます。

＜例＞  MS-DOS上のコマンドラインから設定

SET PCFXBACKUP=A:\FXGA\SRAM32K.RAM

PCFXCARD=<filename>[,"SIZE"]

filelib.aを使用するプログラムで拡張カードのバックアップのエミュレーションを行う
時のファイルを指定します。指定ファイルが存在しない場合は作成します。
"SIZE"は、ファイルを作成する時に確保する容量を設定します。指定されたファイルが
既に存在する場合は、そのファイルのサイズに従います。
設定できるサイズは次に示す中から選択してください。指定の無い場合や設定が間違っ
ている場合は128キロバイトで確保されます。

32K        ：32キロバイト
64K        ：64キロバイト
128K       ：128キロバイト
256K       ：256キロバイト
512K       ：512キロバイト
1M         ：1メガバイト
2M         ：2メガバイト
4M         ：4メガバイト
8M         ：8メガバイト


＜例＞  MS-DOS上のコマンドラインから設定

SET PCFXCARD=A:\FXGA\CARD64K.RAM,64K

環境変数の設定の無い場合は、フロッピーディスクにPCFXCARD.RAMで128キロバイト確
保されます。


■２．３  コンフィギュレーションファイル

デバッガは起動したディレクトリの“FXDBINIT”を読み込みます。
コンフィギュレーションファイルには、起動時に自動実行するコマンド、ヒストリ、エ
イリアスを記録しておくことができます。


＜プログラム例＞

# FXDBINIT sample
autoexec
{
set hexout 1
set repeatmode 1
}
history
{
d    0
s
}
alias
{
ls   !ls
cat  !cat
}


■２．４  コマンドライン編集キー

コマンド入力行で使用する編集キーは次の通りです。
* －ｇオプションを付けて起動した場合は、この機能は使用できません。

＋－－－－－－＋－－－－－－－－－－－－－－－－＋
｜  キー      ｜            機能                ｜
＋－－－－－－＋－－－－－－－－－－－－－－－－＋
｜    ↑      ｜                                ｜
｜  CTRL＋P   ｜ヒストリを検索しながらさかのぼる｜
｜  CTRL＋W   ｜                                ｜
＋－－－－－－＋－－－－－－－－－－－－－－－－＋
｜    ↓      ｜                                ｜
｜  CTRL＋N   ｜ヒストリを検索しながらくだる    ｜
｜  CTRL＋R   ｜                                ｜
＋－－－－－－＋－－－－－－－－－－－－－－－－＋
｜    ←      ｜カーソルを一文字左へ移動        ｜
｜  CTRL＋B   ｜                                ｜
＋－－－－－－＋－－－－－－－－－－－－－－－－＋
｜    →      ｜カーソルを一文字右へ移動        ｜
｜  CTRL＋F   ｜                                ｜
＋－－－－－－＋－－－－－－－－－－－－－－－－＋
｜  CTRL＋A   ｜カーソルを先頭へ移動            ｜
＋－－－－－－＋－－－－－－－－－－－－－－－－＋
｜  CTRL＋E   ｜カーソルを行末へ移動            ｜
＋－－－－－－＋－－－－－－－－－－－－－－－－＋
｜  CTRL＋D   ｜カーソル位置の文字を削除        ｜
＋－－－－－－＋－－－－－－－－－－－－－－－－＋
｜  CTRL＋H   ｜バックスペース                  ｜
＋－－－－－－＋－－－－－－－－－－－－－－－－＋
｜  CTRL＋K   ｜カーソル以降を削除              ｜
＋－－－－－－＋－－－－－－－－－－－－－－－－＋
｜  CTRL＋I   ｜コマンド、シンボルを補完する    ｜
｜    TAB     ｜カーソルを先頭へ移動            ｜
＋－－－－－－＋－－－－－－－－－－－－－－－－＋

＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

第３章  コマンド

■３．１  コマンド表記

式、アドレスは、アセンブラレベル＊でのアドレスを指定する式を記述できます。

●使用できる演算子

＋－＋－－－－－－＋
｜＋｜加算        ｜
＋－＋－－－－－－＋
｜－｜減算        ｜
＋－＋－－－－－－＋
｜＊｜乗算        ｜
＋－＋－－－－－－＋
｜／｜除算        ｜
＋－＋－－－－－－＋
｜％｜剰余        ｜
＋－＋－－－－－－＋
｜＆｜論理積      ｜
＋－＋－－－－－－＋
｜｜｜論理和      ｜
＋－＋－－－－－－＋
｜！｜論理否定    ｜
＋－＋－－－－－－＋
｜＾｜排他的論理和｜
＋－＋－－－－－－＋


●使用できるアドレス表現
＋－－－－－－－－－＋－－－－－－－－－－－－－－－－－－－－－＋－－－－－＋
｜                  ｜                                          ｜    例    ｜
＋－－－－－－－－－＋－－－－－－－－－－－－－－－－－－－－－＋－－－－－＋
｜２進              ｜先頭が“%”で始まる。                     ｜  %1010   ｜
＋－－－－－－－－－＋－－－－－－－－－－－－－－－－－－－－－＋－－－－－＋
｜８進              ｜先頭が“\”で始まる。                     ｜  \72     ｜
＋－－－－－－－－－＋－－－－－－－－－－－－－－－－－－－－－＋－－－－－＋
｜１０進            ｜先頭が“@”で始まる。                     ｜  @5270   ｜
＋－－－－－－－－－＋－－－－－－－－－－－－－－－－－－－－－＋－－－－－＋
｜１６進            ｜何も指定しない。                          ｜    6a    ｜
＋－－－－－－－－－＋－－－－－－－－－－－－－－－－－－－－－＋－－－－－＋
｜シンボル          ｜先頭が“.”（ピリオド）で始まる、またはラ ｜          ｜
｜                  ｜ベル名をそのまま記述する。                ｜  .label  ｜
＋－－－－－－－－－＋－－－－－－－－－－－－－－－－－－－－－＋－－－－－＋
｜内部変数          ｜先頭が“#”で始まる。                     ｜  #lines  ｜
＋－－－－－－－－－＋－－－－－－－－－－－－－－－－－－－－－＋－－－－－＋
｜レジスタ          ｜レジスタ名をそのまま記述する。            ｜    gp    ｜
＋－－－－－－－－－＋－－－－－－－－－－－－－－－－－－－－－＋－－－－－＋
｜現在ＰＣ          ｜ピリオドのみ記述する。                    ｜    .     ｜
＋－－－－－－－－－＋－－－－－－－－－－－－－－－－－－－－－＋－－－－－＋
｜ソース行のアドレス｜‘ファイル名:行番号’形式のもの。         ｜foo.c:50  ｜
＋－－－－－－－－－＋－－－－－－－－－－－－－－－－－－－－－＋－－－－－＋


■３．２  Ｃ言語の式表記

Ｃ言語の式の記述と同じ形式で記述します。

＜例＞
123        →  １０進
0x123      →  １６進
i          →  変数
*p         →  ポインタｐの指しているメモリー内容

変数のスコープ（可視範囲）は、現在トレース中のプログラムカウンタに依存します。
優先順位の高い順から記すと以下の順で検索されます。

(1) 現在ブロック内で宣言された変数
(2) 現在関数内で宣言された変数
(3) 現在モジュール内で宣言された静的変数
(4) グローバルに宣言された変数

式としてＣで表現できる型、演算子の記述が可能です。
キャスト式については、「(int*)i」のような基本的な型名が使用できます。式の中に
演算子（代入、インクリメント、デクリメント）を記述した場合は、副作用を起こす
ことになります。


■３．３  式に使用できる演算子

●単項演算子

＋－－－－－－＋－－－－－－－－－－＋
｜!           ｜ＮＯＴ演算子        ｜
＋－－－－－－＋－－－－－－－－－－＋
｜~           ｜１の補数演算子      ｜
＋－－－－－－＋－－－－－－－－－－＋
｜+           ｜単項プラス演算子    ｜
＋－－－－－－＋－－－－－－－－－－＋
｜-           ｜単項マイナス演算子  ｜
＋－－－－－－＋－－－－－－－－－－＋
｜++          ｜インクリメント演算子｜
＋－－－－－－＋－－－－－－－－－－＋
｜--          ｜デクリメント演算子  ｜
＋－－－－－－＋－－－－－－－－－－＋
｜*           ｜間接演算子          ｜
＋－－－－－－＋－－－－－－－－－－＋
｜&           ｜アドレス演算子      ｜
＋－－－－－－＋－－－－－－－－－－＋
｜(型名)      ｜キャスト演算子      ｜
＋－－－－－－＋－－－－－－－－－－＋
｜sizeof      ｜sizeof演算子        ｜
＋－－－－－－＋－－－－－－－－－－＋


●二項演算子

＋－－－－－－－－－－－－－－－＋－－－－－－＋
｜      *   /   \   %   -       ｜算術演算子  ｜
＋－－－－－－－－－－－－－－－＋－－－－－－＋
｜          <<    >>            ｜シフト演算子｜
＋－－－－－－－－－－－－－－－＋－－－－－－＋
｜<   >   <=    >=    ==    !=  ｜関係演算子  ｜
＋－－－－－－－－－－－－－－－＋－－－－－－＋
｜            &   |             ｜論理演算子  ｜
＋－－－－－－－－－－－－－－－＋－－－－－－＋
｜              ,               ｜カンマ演算子｜
＋－－－－－－－－－－－－－－－＋－－－－－－＋


●？：三項演算子


●代入演算子

＋－－－＋－－－－－－－－－－－－－－－－＋
｜=     ｜単純代入演算子                  ｜
＋－－－＋－－－－－－－－－－－－－－－－＋
｜*=    ｜乗算代入演算子                  ｜
＋－－－＋－－－－－－－－－－－－－－－－＋
｜/=    ｜除算代入演算子                  ｜
＋－－－＋－－－－－－－－－－－－－－－－＋
｜%=    ｜剰余代入演算子                  ｜
＋－－－＋－－－－－－－－－－－－－－－－＋
｜+=    ｜加算代入演算子                  ｜
＋－－－＋－－－－－－－－－－－－－－－－＋
｜-=    ｜減算代入演算子                  ｜
＋－－－＋－－－－－－－－－－－－－－－－＋
｜<<=   ｜左シフト代入演算子              ｜
＋－－－＋－－－－－－－－－－－－－－－－＋
｜>>=   ｜右シフト代入演算子              ｜
＋－－－＋－－－－－－－－－－－－－－－－＋
｜&=    ｜ビットごとの代入演算子          ｜
＋－－－＋－－－－－－－－－－－－－－－－＋
｜|=    ｜ビットごとのＯＲ代入演算子      ｜
＋－－－＋－－－－－－－－－－－－－－－－＋
｜^=    ｜ビットごとの排他的ＯＲ代入演算子｜
＋－－－＋－－－－－－－－－－－－－－－－＋


●sizeof演算子

sizeof(名前)

  名前には型名（“int”、“char”など）、“typedef”された型名、変数名が指定さ
  れます。

＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

第４章  デバッガのコマンド

■４．１  コマンドの書式

＜コマンド名＞  ［＜パラメータ＞］

［コマンド名］
アルファベットまたは記号で表したコマンド名を指定します。サイズの指定ができるコ
マンドでは、b（バイト）、h（ハーフワード）、w（ワード）のいずれかをコマンドの
直後に加えることができます。

［パラメータ］
コマンドが受けとるパラメータを指定します。
パラメータの種類や数は、各コマンドにより異なっています。
コマンドの説明で、“[ ]”が付いているパラメータは省略可能です。
<range>はアドレスの範囲を指定します。

＜例＞
d  1000 l200

* 1000番地から200バイトダンプすることを意味します。

●マルチステートメント
コマンドを“;”（セミコロン）で区切ることによって、一行に複数のコマンドを記述
することができます。

＜例＞
d ; l
d ; /\

＋－－－＋－－－－－－－－－－－－－－－－－－－－－－－－－－－＋
｜記号  ｜                    意味                              ｜
＋－－－＋－－－－－－－－－－－－－－－－－－－－－－－－－－－＋
｜［  ］｜この中の項目は省略可能です                            ｜
＋－－－＋－－－－－－－－－－－－－－－－－－－－－－－－－－－＋
｜＜  ＞｜この中は入力するべきデータを示します                  ｜
＋－－－＋－－－－－－－－－－－－－－－－－－－－－－－－－－－＋
｜range ｜アドレスなどの範囲を指定します                        ｜
｜      ｜                                                      ｜
｜      ｜書式                                                  ｜
｜      ｜                                                      ｜
｜      ｜＜start＞  l＜length＞  または、  ＜start＞  ＜end＞  ｜
｜      ｜                                                      ｜
｜      ｜  start：先頭アドレス  end：終了アドレス  length：長さ｜
＋－－－＋－－－－－－－－－－－－－－－－－－－－－－－－－－－＋
｜size  ｜サイズを表わす文字を指定します                        ｜
｜      ｜                                                      ｜
｜      ｜    b：バイト、h：ハーフワード、w：ワード             ｜
＋－－－＋－－－－－－－－－－－－－－－－－－－－－－－－－－－＋


■４．２  各コマンドの説明


１）一行アセンブラ  ＊

a  [address]

[address]番地からV810のニーモニックをアセンブルしてメモリに格納します。
[address]を省略した場合はカレントアドレスから開始します。
アセンブラを抜けるには“.”（ピリオド）を入力します。


２）ブレークポイントの表示

b

bコマンドで設定した全ブレークポイントの現在の情報を表示します。
この時表示される内容は次の通りです。

○有効／無効フラグ（e／d）
○ブレークポイント番号
○ブレークポイントアドレス
○ブレークカウンタ
○カウンタ設定値

＜例＞

e  0  00008480  [0;1]  <main> (main.c:5)
d  1  00009240  [1;1]


３）ブレークポイントの設定

b <関数名>
b <ソースファイル名:行番号>
b .
b <アドレス>

'rg'コマンドや'g'コマンドでプログラムを実行する前に、'b'コマンドでブレークポイ
ントを設定することにより、プログラムカウンタがブレークポイントと一致した時点で
実行を中断します。

(1) b <関数名>
関数名でブレークポイントを設定

＜例＞関数'game_main()'に設定

b game_main

(2) b <ソースファイル名：行番号>
Cのソースファイル中の行番号でブレークポイントを設定

＜例＞'main.c'の32行目に設定

b main.c:32

  Cコンパイラにソースコードデバッグオプションが必要
                             参照：'list','v'

(3) b .
現在のプログラムカウンタ値にブレークポイントを設定

(4) b <アドレス>
直接アドレスを指定する

ブレークポイントは32個設定できます。
またブレークポイントにさしかかっても中断しない回数を設定することができます。

b <ブレークポイント>[@回数]

＜例＞関数'game_main()'を10回目のコールで中断します

b game_main @10
b
e 0 00008500 [0;10] <game_main> (main.c:32)


４）ブレークポイントの削除

bc  <bp>

[bp]で指定した番号のブレークポイントを削除します。
[bp]に“*”（アスタリスク）を指定すると全てのブレークポイントを削除します。


５）ブレークポイントの無効化

bd  <bp>

[bp]で指定した番号のブレークポイントを無効にします。
[bp]に“*”（アスタリスク）を指定すると全てのブレークポイントを無効にします。
ブレークポイントの情報は残ったままです。


６）ブレークポイントの有効化

be  <bp>

[bp]で指定した番号のブレークポイントを有効にします。


７）ブレークカウンタの初期化

br  <bp>

[bp]で指定した番号のブレークポイント通過カウンタを０に初期化します。


８）カラーパレットのダンプ

cd  [<range>]

rangeで指定した範囲のカラーパレットメモリの内容を表示します。


９）カラーパレットの編集

ce  [<address>][data]

指定した値をカラーパレットメモリへ書き込みます。

dataを指定しなかったときは、エディット状態になります。
終了したいときは、“.” を入力して下さい。また、一つ前のアドレスに戻りたいとき
は、“^”、“-”のどちらかを入力して下さい。


１０）カラーパレットを指定値でフィル

cf <range> <data>

range で指定したカラーパレットメモリに、data をフィルします。


１１）Ｃ言語の式評価

c?  <expression>

Ｃ言語の式を計算して結果を表示します。
使用できる演算子などについては『３．２  Ｃ言語の式表記』をご参照ください。


１２）メモリのダンプ

d[size]  [<range>]

rangeで指定した範囲のメモリの内容を表示します。


１３）メモリ内容の編集

e[size]  [address]  [data]

指定した値をメモリに書き込みます。
サイズを省略した場合はバイト（ｂ）になります。

dataを指定しなかったときは、エディット状態になります。
終了したいときは、“.” を入力して下さい。また、一つ前のアドレスに戻りたいとき
は、“^”、“-”のどちらかを入力して下さい。


１４）echo  <ON/OFF>
デバッガの表示／非表示を制御します。
echo offでデバッガの表示を中止します。echo onで表示を再開します。
マクロの中などで、表示を抑制したい場所に使用すると便利です。


１５）フィルメモリ

f[size] <range> <data>

rangeで指定した範囲をdataで満たします。
sizeを省略した場合は、バイト（b）になります。


１６）プログラムの継続実行

g  [start  [,address]]

startで指定したアドレスからプログラムを実行します。
実行後に、CTRL+B 又はCTRL+Cを押すとプログラムを停止します。
startを省略した場合は現在のpcレジスタの値から実行します。
アドレスの前に“,”（カンマ）をつけた場合はそのアドレスにブレークポイントをかけ
てから実行します。


１７）コマンドヒストリ一覧

h

コマンドヒストリの一覧を表示します。


１８）カレントソースファイルの切り替え

I[?,num]

カレントソースをnum番に切り替えます。
numを省略した場合は現在のカレントソースファイル名と番号を表示します。
“I?”と入力した場合は、全ソースファイルの名前を表示します。


１９）I／Oポートから入力

i[size]  <address>

指定のI／Oアドレスから指定されたサイズで読み、その値を表示します。
sizeが省略された場合はバイトになります。


２０）HuC6272RAMのダンプ

kd  [<range>]

rangeで指定したHuC6272RAMの内容をダンプします。


２１）HuC6272RAMの編集

ke  [address]  [data]

指定した値をHuC6272RAMに書き込みます。

dataを指定しなかったときは、エディット状態になります。
終了したいときは、“.” を入力して下さい。また、一つ前のアドレスに戻りたいとき
は、“^”、“-”のどちらかを入力して下さい。


２２）HuC6272RAMのフィルメモリ

kf  <range>  <data>

rangeで指定したHuC6272RAMの範囲をdataで満たします。


２３）HuC6272RAMからメインメモリへ転送

kg  <range>  <address>

rangeで指定したHuC6272RAMの範囲を指定のメインメモリアドレスへ転送します。


２４）漢字モードの切替え

kj

ダンプリストなどのASCII文字列内に、シフトJIS漢字コードがあった時の表示、非表示
を指定します。
コマンドを実行するたびに表示／非表示が切り替わります。

>kj
KANJI ON
>kj
KANJI OFF


２５）HuC6272RAMのメモリムーブ

km  <range>  <address>

rangeで指定したHuC6272RAMの範囲を指定のHuC6272RAMアドレスへ転送します。


２６）メインメモリからHuC6272RAMへ転送

kp  <range>  <address>

rangeで指定したメインメモリの範囲を指定のHuC6272RAMアドレスへ転送します。


２７）HuC6272RAMへファイルの内容を転送する

ky  <filename>  <address>

filenameで指定したファイルの内容をaddressで指定したHuC6272RAMへ転送します。

２８）逆アセンブル  ＊

l  [<range>]

rangeで指定した範囲を逆アセンブルします。
rangeを省略した場合は、カレントアドレスから１６命令逆アセンブル表示します。


２９）メモリブロックの移動

m  <range>  <address>

rangeで指定した範囲をaddressに移動します。


３０）マクロの定義

macro  <name>
<コマンド０>
     ・
     ・
<コマンドｎ>
endm

マクロコマンド name を登録します。
マクロ名に、デバッガのコマンドと同じ名前を指定することはできません。
マクロに指定できる引数は１０個までです。
マクロコマンド内では&0-&9として使用します。
&*と指定したときは、そこに全ての引数が展開されます。
引数の数は argc というデバッガのシステム変数で知ることができます。


３１）マクロ定義の削除

mdel <name>

マクロ名 name のマクロ定義を削除します。


３２）マクロコマンド実行時の表示／非表示を切替

mecho <on/off>

“mecho on” で、マクロコマンド実行時のコマンドを表示します。
“mecho off” で、マクロコマンド実行時のコマンドを表示しません。
デフォルトは "mecho on" の状態になっています。


３３）マクロ定義リストの表示

mlist [<name>]

マクロ名 name のコマンドの内容を表示します。
マクロ名 name を省略したときは、登録されている全てのマクロを表示します。


３４）メモリ内のデータ検索

ms[size] <range> <data> [ <data>...]

range で指定したメモリから、data を size に従い検索し、その先頭アドレスを表示し
ます。
size が省略された場合は、バイト（b）になります。


３５）I／Oポートへ出力

o[size]  <address> <data>

指定のI／Oアドレスへ、指定したデータを出力します。
sizeが省略された場合はバイトになります。


３６）シンボルの一覧

p  [name]

シンボル名の一覧を表示します。
nameには検索したいシンボル名を指定します。
検索するシンボル名にはワイルドカード（正規表現）が指定できます。


３７）テクスチャーバッファーをパックモードでダンプする

pd  [<range>]

rangeで指定されたテクスチャーバッファーをパックモードでダンプします。
アドレスは$8000毎にバンクをインクリメントします。


３８）テクスチャーバッファーをパックモードでエディットする

pe  [<address>[data]]

テクスチャーバッファーパックモードでエディットします。
addressの指定の無い場合は0番地からエディット状態になります。
addressの指定がある場合は、指定アドレスからエディット状態になります。
address及びdataの指定がある場合は、指定アドレスをdataに書き換えます。
エディット状態の操作についてはeコマンドを参照してください。
アドレスは$8000毎にバンクをインクリメントします。


３９）書式に従い文字列を表示

printf "format" [<arg0 arg1 arg2 ・・・>]

format はＣ言語の標準関数である printf() とほとんど同じですが、浮動小数点はサポ
ートされていませんので、%f、%e などは使用できません。
書式 %s に与えるアドレスはメモリアドレスになります。


４０）指定ファイルをテクスチャーバッファーへパックモードで転送する

py  <filename>  [address]

filenameで指定されたファイルの実行部をテクスチャーバッファーへパックモードで転
送します。
addressの指定がある場合は、指定アドレスへ転送します。
指定の無い場合は、0番地へ転送します。
アドレスは$8000毎にバンクをインクリメントします。


４１）デバッガの終了

q

デバッガを終了します。


４２）ファイルの実行部分（データ）のみ読み込み

r  <filename>

filenameで指定した標準出力ファイル（.ex）の実行部分（データ）のみ読み込みます。


４３）プログラムを実行する

rg

割り込みベクタを初期化して、'__start'または'main'関数からプログラムを実行しま
す。
(1) スタートアップファイルをリンクしている場合：

初期化モジュール'__start'から実行を開始します。

(2) スタートアップファイルをリンクしていない場合：

デバッガは'main'関数から実行します。
この場合スタックポインタ（sp）はゼロページの終了アドレスへ設定されます。
'main'関数の終了時はプログラムを中断します。

PC  = main
SP  = 0xe00
ゼロページ未使用の場合スタックサイズは、32256 byte使用できます。

(3) 直接指定アドレスから実行する場合：

rg [StartAddress][,StopAddress]

[StartAddress]の指定がある場合は、指定されたアドレスから実行します。
[,StopAddress]の指定がある場合は、指定されたアドレスで実行中断します。

アドレスの指定は、関数名で指定できます。

プログラムの実行を中断する（キーボードブレーク）

'rg'コマンドで実行されたプログラムを中断するには、

[CTRL]+[B]
または、
[CTRL]+[C]

を入力することによりプログラムの実行を中断します。

中断したプログラムは'g'コマンドで続行できます。


４４）レジスタマークのリセット

roff  <register>

ronで設定したマークを取り消します。


４５）レジスタマークのセット

ron  register

“x”コマンドなどで表示させたいレジスタをマークします。


４６）ターゲットのリセット

rst

ターゲットをリセットします。リセットボタンを押したときと同じ状態になります。
デバッガ起動中にどうしてもリセットしたい場合は、このコマンドでリセットするよう
にしてください。


４７）ファイルの読み込み

r@  <filename>  [address]

filenameで指定したバイナリーイメージファイルをメモリに読み込みます。
addressを省略した場合は０番地から読み込みます。


４８）ステップ実行

s[=address][count]

プログラムを[count]回数分ステップ実行します。指定しない場合は１を指定したのと同
じになります。アドレスを指定した場合はそのアドレスから、指定しなかった場合はプ
ログラムカウンタの指すアドレスから実行を開始します。もし、指定したカウント回数
に達する前にブレークポイントに出会ったり、割り込みが発生した場合はそこでステッ
プを中断します。“s”コマンドではサブルーチン分岐命令で呼び出されるサブルーチ
ンは１命令に相当します。


４９）C言語のソースファイルでステップ実行する

S
ss
U
us

C言語のソースファイルに合わせて１行づつ実行します。
関数コールが発生した場合は関数の終了まで実行を続けます。関数コール実行中は、キ
ーブレーク（CTRL+BまたはCTRL+C）が可能です。また実行した関数コール内にブレーク
ポイントが設定してある場合は、そのブレークポイントで実行を停止します。

注）  Cコンパイラに-gオプションが必要です。
Cコンパイラのオプティマイズの状態によっては１回の実行で複数行を進行する場合もあ
ります。


５０）システム変数への代入

set  [name]  [value]

デバッカ内部に変数の値を代入します。
nameには３０文字以内の英文字を指定します。すでに同じ名前が存在する場合は上書き
されます。
valueには整数値を指定します。
パラメータを省略すると変数の一覧を表示します。
またデバッガがすでに設定している変数と意味は次の通りです。

printcode
０以外の値を指定した場合逆アセンブル＊時にマシンコードも表示します。デフォルト
は０です。

savhis
０以外の値を指定した場合デバッガ終了時にヒストリをセーブします。デフォルトは１
です。

repeatmode
０以外の値を設定した場合空行としてリターンキーを押した後に最後のコマンドが繰り
返されます。デフォルトは１です。

hexout
１を設定した場合逆アセンブル＊時にオペランドの数値を１６進数で表示します。
２を設定した場合はディスプレースメントを１６進数で表示します。
３を設定した場合逆アセンブル＊時のオペランドの数値とディスプレースメントを１６
進数で表示します。
デフォルトは１です。

regstyle
逆アセンブラ＊のレジスタ表示を切替えます。１を設定した場合“r31”など特別な意味
のあるレジスタは“link”などに置き換えて表示します。２を設定した場合、別名で表
示します。
０を指定した場合は全て“r”で始まる名前で表示します。
デフォルトは２です。

rgadrs
“rg”コマンドで実行を開始するアドレスを設定します。


５１）トレース実行

t[=address]  [count]

プログラムを[count]回数分トレース実行します。指定がなかった場合１を指定したのと
同じになります。
アドレスを指定した場合はそのアドレスから、指定しなかった場合はプログラムカウン
タの指すアドレスから実行を開始します。もし、指定したカウント回数に達する前にブ
レークポイントに出会ったり、割り込みが発生した場合はそこでステップを中断します
。“t”コマンドではサブルーチンの内部までトレースすることができます。


５２）C言語のソースファイルでトレース実行する

T
ts

次のソース行が現れるまでトレース実行をします。

C言語のソースファイルに合わせて１行づつ実行します。
関数コールが発生した場合はその関数内も１行づつ追跡実行します。
Cコンパイラに-gオプションが必要です。

注）  Cコンパイラに-gオプションが必要です。
Cコンパイラのオプティマイズの状態によっては１回の実行で複数行を進行する場合もあ
ります。
使用するライブラリの関数によっては追跡されない関数もあります。
（PIOLIB.AとFILELIB.Aの関数は追跡しません）


５３）テクスチャーバッファーをアンパックモードでダンプする

td  [<range>]

rangeで指定されたテクスチャーバッファーをアンパックモードでダンプします。
アドレスは$10000毎にバンクをインクリメントします。


５４）テクスチャーバッファーをアンパックモードでエディットする

te  [<address> [data]]

テクスチャーバッファーをアンパックモードでエディットします。
addressの指定の無い場合は0番地からエディット状態になります。
addressの指定がある場合は、指定アドレスからエディット状態になります。
address及びdataの指定がある場合は、指定アドレスをdataに書き換えます。
エディット状態の操作についてはeコマンドを参照してください。
アドレスは$10000毎にバンクをインクリメントします。


５５）テクスチャーバッファーをアンパックモードでフィルする

tf  <range>  <data>

rangeで指定された領域をdataでフィルします。
アドレスは$10000毎にバンクをインクリメントします。


５６）指定ファイルをテクスチャーバッファーへアンパックモードで転送する

ty  <filename>  [address]

filenameで指定されたファイルの実行部をテクスチャーバッファーへパックモードで転
送します。
addressの指定がある場合は、指定アドレスへ転送します。
指定の無い場合は、0番地へ転送します。
アドレスは$10000毎にバンクをインクリメントします。


５７）ステップ実行

u[=address]  [count]

“s”コマンドと同じです。


５８）システム変数の削除

unset  <name>

setで定義した変数を削除します。


５９）リスト

v  [line]
L  [line]

カレントソースリストの内容を表示します。


６０）HuC6270RAMのダンプ

vd  <range>

rangeで指定したHuC6270RAMの内容をダンプします。
v?系のコマンドではHuC6270RAMのアドレス指定の時、ビット１６に１を指定した時、
HuC6270_#1を選択します。


６１）HuC6270RAMの編集

ve  [address]  [data]

指定した値をHuC6270RAMに書き込みます。

dataを指定しなかったときは、エディット状態になります。
終了したいときは、“.” を入力して下さい。また、一つ前のアドレスに戻りたいとき
は、“^”、“-”のどちらかを入力して下さい。


６２）HuC6270RAMのフィルメモリ

vf  <range>  <data>

rangeで指定したHuC6270RAMの範囲をdataで満たします。


６３）HuC6270RAMからメインメモリへ転送

vg  <range>  <address>

rangeで指定したHuC6270RAMの範囲を指定のメインメモリアドレスへ転送します。


６４）HuC6270RAMのメモリムーブ

vm  <range>  <address>

rangeで指定したHuC6270RAMの範囲を指定のHuC6270RAMアドレスへ転送します。


６５）メインメモリからHuC6270RAMへ転送

vp  <range>  <address>

rangeで指定したメインメモリの範囲を指定のHuC6270RAMアドレスへ転送します。


６６）HuC6270RAMへファイルの内容を転送する

vy  <filename>  <address>

filenameで指定したファイルの内容をaddressで指定したHuC6270RAMへ転送します。


６７）ファイルへの出力

w  <name>  <range>

nameで指定したファイルにrangeで指定したメモリの内容を書き出します。


６８）レジスタ内容の表示

x

マークのついたレジスタの内容を表示します。
マークのセット、リセットは ron、roff で設定します。


６９）レジスタ内容の設定

x  [register]  [value]

指定されたレジスタの内容を変更します。
レジスタ名は x コマンドで表示される名前を指定します。


７０）全レジスタ内容の表示

xa

全レジスタの内容を表示します。


７１）ファイルの読み込み

y  <filename>

デバッグするファイルと、シンボルファイルを読み込みます。
ファイルはリンカー“fxlk”が出力したファイルを指定します。


７２）デバッガコマンドの一時中断

y/n

デバッガコマンドを一時中断します。継続する場合は“y”を、中断する場合は“n”を
入力してください。コマンドラインのこのループ（\）と併用するとより効果的です。


７３）シンボルファイルの読み込み

y@  <filename>

シンボルファイルを読み込みます。
ファイルはリンカー“fxlk”が出力したファイルを指定します。


７４）出力リダイレクト

>  [file]

画面に表示された内容をファイルに書き出します。
fileを省略するとファイルをクローズして出力を中止します。


７５）出力リダイレクトアペンド

>>  [file]

“>”と同じですが、ファイルがすでに存在している場合は追加していきます。


７６）入力リダイレクト

<  file

“@>”コマンドで出力したコマンドのファイルを入力してファイルの内容をコマンド
として実行します。


７７）コマンド出力リダイレクト

@>  <file>

入力されたコマンドをファイルに書き出します。
また各コマンド（例えば“a”や“me”）での入力も出力されます。
書き出したファイルは“<”コマンドで動作を再現することができます。


７８）子プロセスの実行

!  [command]

commandを実行します。
commandが指定された場合はそのコマンドを実行します。
commandが省略された場合、COMMAND.COMを実行します。


７９）コマンドの別名定義

#  [name  [def]]

引数を省略した場合は一覧を表示します。
コマンドを別名で定義します。定義を取り消す場合は、nameだけを指定します。
すでに予約されているデバッガコマンドと同じ名前を指定することはできませんが、大
文字を含めば可能となります。また、別名定義されたコマンドへ渡されるパラメータの
位置などの指定はできないので次のような簡単な定義しかできません。

#  dir  !ls
#  dlp  d;y/n;\


８０）ヘルプ

?

コマンドの一覧を表示します。


８１）式を計算する

?  <expression>

expressionで指定した式を計算し表示します。


８２）コマンドの繰り返し

\

コマンドを繰り返し実行します。例えば “d;\”のようにするとダンプを繰り返し
ます。キーを押せば中断します。


８３）コマンドの繰り返し

/\

“\”と異なっているのは、繰り返す直前で繰り返すかどうか尋ねる点です。


８４）直前に入力したコマンドの実行

!!

このコマンドを入力する前に入力したコマンドを実行します。

＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

第５章  マクロ機能

マクロ機能は、複数のコマンドを組み合わせて新しいコマンドを作成したり、マクロ制
御文や変数を使用して自由度のあるマクロコマンドを作成することができます。


■５．１  マクロコマンドの実行

マクロコマンドの実行は、通常のコマンドと同じように入力して行ないます。
マクロコマンドの種類は以下のとおりです。

(1) macro  マクロの定義
(2) mlist  マクロの一覧表示
(3) mdel   マクロの削除
(4) mecho  マクロ内コマンド実行時の表示／非表示
(5) endm   マクロ定義の終了

マクロコマンドの使用方法については、「４.２ 各コマンドの説明」を参照して下さ
い。

■５．２  制御文

マクロ制御文は以下の種類が用意されています。

while(<expr>) {}       条件付き繰り返し
if(<expr>) {} else {}  条件制御
break                  ブロックからの抜け出し

マクロ制御文の <expr> に使用できる式はC言語とほぼ同様です。
<expr>

式1==式2  ：式1と式2が等しいとき真
式1!=式2  ：式1と式2が等しくないとき真
式1>=式2  ：式1が式2以上のとき真
式1 >式2  ：式1が式2より大きいとき真
式1<=式2  ：式1が式2以下のとき真
式1 <式2  ：式1が式2未満のとき真

真＝１


１）  while  ：条件付き繰り返し

《書式》  while(<expr>){
<command>
}

《機能》  <expr>が真のときブロック内を繰り返します。


２）  if  ：条件制御

《書式》  if(<expr>){
<command1>
} else {
<command2>
}

《機能》<expr>が真のとき<command1>を実行します。偽のときは、<command2>を実行し
ます。else{}は省略できます。

３）  break  ：ブロックからの抜け出し

《書式》  break

《機能》  break文があると、そのときのブロックを抜け出します。
ブロックの外でbreak文が実行されると、マクロから抜け出します。


■５．３  マクロ機能の使用例


１）アドレスの内容が指定値になるまで監視する

値をチェックしたいアドレスにブレークポイントを設定し、ブレークするたびにデータ
をチェックして一致するまで実行を続ける。

>macro Watch
>   b check_point
>   while ( [&0] != &1 ) {
>  g
>   }
>endm
>
>
>Watch Address Data
>


２）  ウォッチポイントの設定

>macro ws
>   if ( #argc > 0 ) {
>  set waddr &0
>  set wsave [#waddr] & ffff
>  printf "watch point at %04x\n" #waddr
>   } else {
>  printf "usage:ws address\n"
>   }
>endm
>
>
>ws address
>


３）  ウォッチトレース

トレースを実行するたびに ws で設定したアドレスの内容に変化があった場合、その値
を表示します。

これは使用する前に、２）ws マクロでウォッチアドレスをセットする必要があります。

>macro wt
>   t
>   if ( ([#waddr] & ff) != #wsave ) {
>  printf "changed %x(%d) -> %x(%d) "#wsave #wsave [#waddr]&ff [#waddr]&ff
>  set wsave [#waddr] & ff
>   }
>endm
>
>
>wt
>


４）  ウォッチステップ

ステップを実行するたびに ws で設定したアドレスの内容に変化があった場合、その値
を表示します。

これは使用する前に、２）ws マクロでウォッチアドレスをセットする必要があります。

>macro wu
>   u
>   if ( ([#waddr] & ff) != #wsave ) {
>  printf "changed %x(%d) -> %x(%d) "#wsave #wsave [#waddr]&ff [#waddr]&ff
>set wsave [#waddr] & ff
>   }
>endm
>
>
>wu
>

＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

第６章  デバッガのメッセージ

デバッガが表示するメッセージは、デバッガ自身のメッセージとV810からのメッセージ
があります。デバッガが表示するメッセージについて以下に示します。


■６．１  エラーメッセージ

デバッガが表示するエラーメッセージとその意味を以下に示します。

＋－－－－－－－－－－－－－－－＋－－－－－－－－－－－－－－－－－－＋
｜エラーメッセージ              ｜ 意味                               ｜
＋－－－－－－－－－－－－－－－＋－－－－－－－－－－－－－－－－－－＋
｜Bad parameter                 ｜ パラメータの指定が誤っている       ｜
＋－－－－－－－－－－－－－－－＋－－－－－－－－－－－－－－－－－－＋
｜Not enough memory             ｜ メモリが足りない                   ｜
＋－－－－－－－－－－－－－－－＋－－－－－－－－－－－－－－－－－－＋
｜No source file                ｜ ソースモードにしようとしたが       ｜
｜                              ｜ ソースファイルは読み込まれていない ｜
＋－－－－－－－－－－－－－－－＋－－－－－－－－－－－－－－－－－－＋
｜??: No such file or directory ｜ ファイル？？が見つからない         ｜
＋－－－－－－－－－－－－－－－＋－－－－－－－－－－－－－－－－－－＋
｜?? is directory               ｜ ファイル？？はディレクトリである   ｜
＋－－－－－－－－－－－－－－－＋－－－－－－－－－－－－－－－－－－＋
｜Bus error in debugger         ｜ デバッガ自身が暴走した             ｜
＋－－－－－－－－－－－－－－－＋－－－－－－－－－－－－－－－－－－＋
｜Segmentation fault in debugger｜ デバッガ自身が暴走した             ｜
＋－－－－－－－－－－－－－－－＋－－－－－－－－－－－－－－－－－－＋
｜signal ??                     ｜ シグナル？？が発生した             ｜
＋－－－－－－－－－－－－－－－＋－－－－－－－－－－－－－－－－－－＋
｜'??'  is locked segment       ｜ ライブラリ関数などでトレースの禁止 ｜
｜                              ｜ されたブロック内にブレークポイント ｜
｜                              ｜ を設定した                         ｜
＋－－－－－－－－－－－－－－－＋－－－－－－－－－－－－－－－－－－＋

■６．２  その他のメッセージ

V810からのメッセージ
＋－－－－－－－－＋－－－－－－－－－－－－－－－＋
｜エラーメッセージ｜意味                          ｜
＋－－－－－－－－＋－－－－－－－－－－－－－－－＋
｜opecode error   ｜不当な命令を実行した          ｜
＋－－－－－－－－＋－－－－－－－－－－－－－－－＋
｜address error   ｜アドレスエラー                ｜
＋－－－－－－－－＋－－－－－－－－－－－－－－－＋
｜key break       ｜NMIが送られた                 ｜
＋－－－－－－－－＋－－－－－－－－－－－－－－－＋
｜trace           ｜シングルステップが実行された  ｜
＋－－－－－－－－＋－－－－－－－－－－－－－－－＋
｜soft break      ｜trap 1xH命令を実行した        ｜
＋－－－－－－－－＋－－－－－－－－－－－－－－－＋
｜zero divide     ｜０で除算した                  ｜
＋－－－－－－－－＋－－－－－－－－－－－－－－－＋
｜floating  error ｜浮動小数点の演算エラー        ｜
＋－－－－－－－－＋－－－－－－－－－－－－－－－＋


＊……アセンブラを利用する際、使用するものです。
  尚、「ＧＭＡＫＥＲ」スタータキットではアセンブラはサポートされておりません。

＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝

《著作権及び登録商標等》

・FXDB.EXE 及び FXDB.TXT（以下、"本ソフトウェア"という）は、ＰＣ－ＦＸＧＡ用の
  ソフトウェア開発ツールの一部です。本ソフトウェアを、ＰＣ－ＦＸ、ＰＣ－ＦＸＧ
  Ａ用のソフトウェア開発以外の目的で使用しないで下さい。

・本ソフトウェアを使用した結果、直接及び間接的に生じた損害について、株式会社ハ
  ドソンは、一切の責任または債務を負わないものとします。

・本ソフトウェアの操作方法、技術的内容、その他の質問について、株式会社ハドソン
  では、直接お答えしていません。お問い合わせはご遠慮下さい。

・本ソフトウェアの使用に際し、「ソフトウェアのご使用条件」をよくご覧いただき、
  ご利用下さいますようお願い致します。

・本ソフトウェアの著作権は、株式会社ハドソンが保有しています。


MS-DOSは米国マイクロソフト社の登録商標です。
その他、記載されている会社名、製品名は、各社の登録商標または商標です。


                                                            (C)1995 HUDSON SOFT
